<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<style type="text/css">
*{
	padding: 0;
	margin: 0;
}
	#box{
		width: 300px;
		height: 300px;
		background: green;
		position: absolute;
		top: 100px;
		left: 89px;
	}
</style>
<script type="text/javascript" src="jquery-1.7.2.min.js"></script>
<script type="text/javascript">
	
$(function(){

	// $('#box').click(function(ev) {
	// 	alert(ev.pageX);
	// });
	
	var box = $('#box');

	// 给div加鼠标按下事件
	box.mousedown(function(ev) {
		// 记录鼠标当前位置
		var mouse_old_left = ev.pageX;
		var mouse_old_top = ev.pageY;

		// 记录div当前位置
		var box_old_left = box.position().left;
		// var box_old_left = box.css('left');//也可这样写
		var box_old_top = box.position().top;


		// 给document加鼠标移动事件
		$(document).mousemove(function(ev) {
			// 获得鼠标最新的位置
			var mouse_new_left = ev.pageX;
			var mouse_new_top = ev.pageY;

			// 计算鼠标移动的距离
			var diff_left = mouse_new_left - mouse_old_left;
			var diff_top = mouse_new_top - mouse_old_top;

			// 计算div的新位置
			var box_new_left = box_old_left+diff_left;
			var box_new_top = box_old_top+diff_top;

			// 赋值回去
			box.css({'left':box_new_left+'px','top':box_new_top+'px'});
		});
	});

	// 鼠标抬起事件
	box.mouseup(function() {
		// 解除document的鼠标移动事件
		$(document).off('mousemove');
	});


})

/***************************************************************************************/
/*在js的事件对象中，可以获得鼠标距离浏览器的距离也可以获得鼠标距离事件源的位置，而在jquery的事件对象中，只能获得鼠标距离浏览器的距离而不能获得距离事件源的位置*/
/***************************************************************************************/
</script>
</head>

<body>

<div id="box"></div>


</body>
</html>
